/*
 *  Лицензия MIT
 * 
 *  Copyright 2011 Salnikov Aleksey.
 * 
 *  Данная лицензия разрешает, безвозмездно, лицам, получившим копию данного программного обеспечения
 *  и сопутствующей документации (в дальнейшем именуемыми "Программное Обеспечение"),
 *  использовать Программное Обеспечение без ограничений, включая неограниченное право
 *  на использование, копирование, изменение, объединение, публикацию, распространение,
 *  сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам,
 *  которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:
 * 
 *  Вышеупомянутый копирайт и данные условия должны быть включены во все копии или значимые
 *  части данного Программного Обеспечения.
 * 
 *  ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ ЛЮБОГО ВИДА ГАРАНТИЙ,
 *  ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ,
 *  СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И НЕНАРУШЕНИЯ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ
 *  НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ
 *  ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ
 *  С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
 *  ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
 */

package look.elements.admin;

import CommonTools.Actions;
import CommonTools.AdminListModel;
import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

/**
 * Левая панель для окна управления администраторами
 *
 * @author Salnikov Aleksey
 */
public class LeftPanel extends JPanel {

    public final JList adminsL;
    JButton createB, editB, deleteB;
    JPanel mainP;
    RightPanel rp;

    public LeftPanel()
    {
        super();

        this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        JPanel leftPanel = new JPanel(new CardLayout());

        //Создаем список администраторов
        adminsL = new JList();
        Actions.refreshAdminList(adminsL);
        adminsL.setToolTipText("Список администраторов");

        leftPanel.add(new JScrollPane(adminsL), "adminsList");
        this.add(leftPanel);

        //Создаем кнопки
        JPanel buttonPanel = new JPanel(new GridBagLayout());

        GridBagConstraints gbc = new GridBagConstraints();

        createB = new JButton("Новый");
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.fill = GridBagConstraints.HORIZONTAL;
        gbc.anchor = GridBagConstraints.SOUTH;
        buttonPanel.add(createB, gbc);

        deleteB = new JButton("Удалить");
        gbc.gridy = 1;
        gbc.fill = GridBagConstraints.HORIZONTAL;
        gbc.anchor = GridBagConstraints.SOUTH;
        buttonPanel.add(deleteB, gbc);
        buttonPanel.setMaximumSize(new Dimension(1000,40));

        this.add(buttonPanel);

        /**********************************************
         * Вешаем события
         *********************************************/
        adminsL.addListSelectionListener(new ListSelectionListener()
            {
                public void valueChanged(ListSelectionEvent e) {
                    try
                    {
                        AdminListModel model = (AdminListModel) adminsL.getModel();
                        rp.showAdmin(model.getAdmin(adminsL.getSelectedIndex()));
                    }
                    catch (Exception ex) {
                        rp.showAdmin(null);
                    }
                }
            });

        createB.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    AddAdminWindow aaw = new AddAdminWindow(adminsL, null);
                }
            });

        deleteB.addActionListener(new ActionListener()
            {
                public void actionPerformed(ActionEvent e)
                {
                    deleteAdmin();
                }
            });
        
    }

    public void setRightPanel(RightPanel rp)
    {
        this.rp = rp;
    }

    /**
     * Процедура удаления администратора
     */
    public void deleteAdmin()
    {
        Actions.deleteAdmin(adminsL);
        Actions.refreshAdminList(adminsL);
    }

}
